package org.web.base.domain.view;

import lombok.Getter;
import lombok.Setter;


/**
 * 封装返回给前端页面的对象，把该对象转成json输出给前端页面。
 */
@Setter
@Getter
public class ViewResultDTO<T> {

    public ViewResultDTO(boolean result) {
        this.result = result;
        if (result) {
            setMsg("操作成功！");
        }
    }

    public ViewResultDTO() {
    }

    private boolean result;
    /**
     *  用于描述操作结果的消息，例如“操作成功！”、“操作失败！”等。是给人看的。
     */
    private String msg;
    /**
     *  用于描述操作结果的详细信息，例如“用户不存在！”、“密码错误！”等详细信息。是给程序员看的。
     */
    private String detailMsg;
    /***
     *  用于描述操作结果的类型，例如“error”、“question”、“info”、“warning”等。是指示前端页面的显示效果。
     *  参见ViewType枚举类。
     */
    private String type;

    /***
     *  指示前端页面的标题，title的名称。
     */
    private String title;

    /**
     *  用于描述返回记录总数，如果返回单条记录，例如返回的module类型是一个对象，而非集合的场合，会自动设置1，详情见setModule方法。
     * */
    private long totalCount = 0;
    /**
     *  用户自定义的返回数据，可以是对象、集合等。
     * */
    T data;


    public enum ViewType {
        error, question, info, warning
    }
}